package com.kakame.codenews.base.config.spring;

import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;

import com.kakame.codenews.base.util.DESUtil;

/**
 * <pre>
 * <b>desc:</b> properties文件属性加密 
 * <b>auth:</b> 何家明
 * <b>date:</b> 2018年5月30日 下午4:19:41
 * </pre>
 */
public class EncryptPropertyPlaceholderResolver extends
        PropertyPlaceholderConfigurer {
    private String[] encryptPropNames = { "db.password", "redis.pass",
            "mail.password" };

    @Override
    protected String convertProperty(String propertyName, String propertyValue) {
        // 如果在加密属性名单中发现该属性
        if (isEncryptProp(propertyName)) {
            return DESUtil.getDecryptString(propertyValue);
        } else {
            return propertyValue;
        }

    }

    /**
     * 是否为需要处理的属性
     * 
     * @param propertyName
     *            属性名称
     * @return
     */
    private boolean isEncryptProp(String propertyName) {
        for (String encryptName : encryptPropNames) {
            if (encryptName.equals(propertyName)) {
                return true;
            }
        }
        return false;
    }
}
